<?php
namespace Mouta\AmistateBundle\Entity;

use Doctrine\ORM\EntityRepository;
use Mouta\AmistateBundle\utils\SfSolr;
use Mouta\AmistateBundle\utils\Strings;



class UsuarioRepository extends EntityRepository
{
    public function findUserAtHeader()
    {
        $em = $this->getEntityManager();
        $query = $em->createQuery('
            SELECT u,iu FROM AmistateBundle:Usuario u INNER JOIN u.imagenes iu where iu.defa = 1 and u.verificado = 1 and u.borrado = 0
            ORDER BY u.en_header_at DESC
            ');
        $query->setMaxResults(10);
        return $query->getResult();
    }
    
    public function findUserSinValidar()
    {
        $em = $this->getEntityManager();
        $query = $em->createQuery('SELECT u FROM AmistateBundle:Usuario u WHERE u.verificado = 0 and u.borrado = 0');
        $query->setMaxResults(1);
        $r = $query->getResult();
        if($r)
            return $r[0]->getId();
        else
            return null;
    }

    public function getFullUserById($usuario_id)
    {
        $em = $this->getEntityManager();
        $query = $em->createQuery('
            SELECT u,t,i FROM AmistateBundle:Usuario u
            LEFT JOIN u.imagenes i LEFT JOIN u.tags t  where u.id = :usuario_id 
            ')->setParameter('usuario_id', $usuario_id);
        $r = $query->getResult();
        if(isset($r[0]))
            return $r[0];
        else
            return false;
    }
    
    /*
     * Se utiliza para obtener el usuario logeado: $this->get('security.context')->getToken()->getUser();
     */
    public function getFullUserByEmail($email)
    {
        $em = $this->getEntityManager();
        $query = $em->createQuery('
            SELECT u,t,i FROM AmistateBundle:Usuario u
            LEFT JOIN u.imagenes i LEFT JOIN u.tags t  where u.usernameCanonical = :usernameCanonical
            ')->setParameter('usernameCanonical', $email);
        $r = $query->getResult();
        if(isset($r[0]))
            return $r[0];
        else
            return false;
    }
    
    public static function getOpcionesSexo($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('0'=>'Hombre','1'=>'Mujer');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesAltura($opcion = false,$default="Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array();
	$return[-1] = $default;
	$return[1] = "<150 cm";
	for($i=2; $i<70; $i++)
	{
            if($i%2)
                $return[$i] = (string)(149+$i)." cm";
	}
	$return[71] = ">220 cm";
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }

    public static function getOpcionesHijos($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'Ninguno','2'=>'1','3'=>'2','4'=>'3','5'=>'4','6'=>'5','7'=>'6','8'=>'7','9'=>'Más de 7');
	if($opcion === false)
            return $return;
        else
            return $return[$opcion];
    }

    public static function getOpcionesEstudios($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'Sin estudios','2'=>'Primaria','3'=>'Secundaria','4'=>'Terciaria','5'=>'Universitaria','6'=>'Post grado','7'=>'Master','8'=>'Doctorado');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }

    public static function getOpcionesReligion($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'Ninguna','2'=>'Cristianismo','3'=>'Judaísmo','4'=>'Budismo','5'=>'Islamismo','6'=>'Hinduismo','7'=>'Otra');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesFumas($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'No','2'=>'De 0 a 10','3'=>'De 10 a 20','4'=>'De 20 a 30','5'=>'Más de 30');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesBebes($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'No','2'=>'Poco','3'=>'Frecuentemente','4'=>'Mucho');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesFisico($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'Esbelto','2'=>'Musculoso','3'=>'Normal','4'=>'Con kilos de más');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesEstadoCivil($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'Soltero','2'=>'Casado','3'=>'En pareja','4'=>'Divorciado','5'=>'Separado','6'=>'Viudo');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesColorPelo($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
        $return = array('-1'=>$default,'1'=>'Morocho','2'=>'Rubio','3'=>'Castaño','4'=>'Pelirrojo','5'=>'Teñido','6'=>'Calvo','7'=>'Otro');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesColorOjos($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
        $opcion = -1;
	$return = array('-1'=>$default,'1'=>'Negros','2'=>'Marrones','3'=>'Grises','4'=>'Verdes','5'=>'Azules','6'=>'Otros');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesVives($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
            $opcion = -1;
	$return = array('-1'=>$default,'1'=>'Solo','2'=>'Con mis padres','3'=>'Comparto habitación','4'=>'Con mi pareja','5'=>'Otro');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesPara($opcion = false){
        if(is_null($opcion))
            $opcion = 1;
	$return = array('1'=>'Amistad','2'=>'Relación estable','3'=>'Intimar','4'=>'Citas','5'=>'Intercambio de fotos','6'=>'Otras');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public static function getOpcionesWebcam($opcion = false,$default = "Seleccionar"){
        if(is_null($opcion))
        $opcion = -1;
	$return = array('-1'=>$default,'1'=>'No','2'=>'Si');
	if($opcion === false)
            return $return;
	else
            return $return[$opcion];
    }
    
    public function getEstadisticas()
    {
        $em = $this->getEntityManager();
        $estadisticas = array();
        
        $query1 = $em->createQuery('SELECT count(u) FROM AmistateBundle:Usuario u');
        $estadisticas['totalusuarios'] = $query1->getSingleScalarResult();
        
        $query1 = $em->createQuery('SELECT count(i) FROM AmistateBundle:ImagenUsuario i');
        $estadisticas['totalimagenes'] = $query1->getSingleScalarResult();
        
        $query1 = $em->createQuery('SELECT count(u) FROM AmistateBundle:Usuario u WHERE u.sexo = 1');
        $estadisticas['totalmujeres'] = $query1->getSingleScalarResult();
        
        $query1 = $em->createQuery('SELECT count(u) FROM AmistateBundle:Usuario u WHERE u.sexo = 0');
        $estadisticas['totalhombres'] = $query1->getSingleScalarResult();
        
        $query1 = $em->createQuery('SELECT count(u) FROM AmistateBundle:Usuario u WHERE u.reindexar = 1');
        $estadisticas['reindexar'] = $query1->getSingleScalarResult();
        
        $query1 = $em->createQuery('SELECT count(u) FROM AmistateBundle:Usuario u WHERE u.enabled = 1');
        $estadisticas['enabled'] = $query1->getSingleScalarResult();
        
        $query1 = $em->createQuery('SELECT count(u) FROM AmistateBundle:Usuario u WHERE u.borrado = 1');
        $estadisticas['borrado'] = $query1->getSingleScalarResult();
        
        $query1 = $em->createQuery('SELECT count(u) FROM AmistateBundle:Usuario u WHERE u.verificado = 0');
        $estadisticas['aVerificar'] = $query1->getSingleScalarResult();
        
        return $estadisticas;
    }
    
}